﻿#region Header
// Copyright 2007-2011, Jerónimo Milea
// 
// This file is part of NetJsWire.
// 
//     NetJsWire is free software: you can redistribute it and/or modify
//     it under the terms of the GNU General Public License as published by
//     the Free Software Foundation, either version 3 of the License, or
//     (at your option) any later version.
// 
//     NetJsWire is distributed in the hope that it will be useful,
//     but WITHOUT ANY WARRANTY; without even the implied warranty of
//     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//     GNU General Public License for more details.
// 
//     You should have received a copy of the GNU General Public License
//     along with NetJsWire.  If not, see <http://www.gnu.org/licenses/>.
#endregion

using System;
using System.ComponentModel;
using System.Drawing.Design;
using System.Windows.Forms;
using System.Windows.Forms.Design;
using NetJsWire.Lite.Editors.TextEditor;

namespace NetJsWire.Lite.Editors
{
    public class ScriptEditor : UITypeEditor
    {
        //private static ScriptEditorForm _form = new ScriptEditorForm();
        //private static EditorForm _form = new EditorForm();
        
        public override UITypeEditorEditStyle GetEditStyle( ITypeDescriptorContext context )
        {
            return UITypeEditorEditStyle.Modal;
        }

        public override object EditValue( ITypeDescriptorContext context, IServiceProvider provider, object value )
        {

            var serv = ( IWindowsFormsEditorService ) context.GetService( typeof( IWindowsFormsEditorService ) );
            if ( serv != null )
            {
                using ( var form = new TextEditorForm() )
                {
                    form.StartPosition = FormStartPosition.CenterParent;
                    form.EditorText = value != null ? value.ToString() : null;
                    var resu = serv.ShowDialog( form );

                    if ( resu == DialogResult.OK )
                        return form.EditorText;
                }
            }
            return value;
        }
    }
}
